/**
 * 将data数据拼接到url后面
 * @param url
 * @param data
 */
export function urlAppendByData(url: string, data?: object): string {
  let params = ''
  if (!data) {
    return url
  }
  Object.keys(data).map((key) => {
    // @ts-ignore
    params += key + '=' + data[key] + '&'
  })
  const appendUrl = (url += '?' + params)
  return appendUrl.substring(0, appendUrl.length - 1)
}
/**
 * 获取请求参数列表
 */
export function getQueryParams(): Array<string> {
  return window.location.search.length > 1 ? window.location.search.substring(1).split('&') : []
}

/**
 * 通过名称获取路径参数
 * @param name 参数名
 */
export function getParamByName(name: string): string {
  const val = getQueryParams().filter((val) => val.lastIndexOf(name) != -1)
  return val.length == 0 ? '' : val[0].split('=')[1]
}

/**
 * 追加query传参
 * @param url 路径
 * @param target 目标对象
 * @param isCover 当目标对象已有该参数时，是否覆盖
 */
export function appendQueryParams(url: string, target: object | any = {}, isCover = true) {
  if (url.lastIndexOf('?') !== -1) {
    url
      .substring(url.lastIndexOf('?') + 1)
      .split('&')
      .forEach((val) => {
        const map: Array<string> = val.split('=')
        if (map.length === 2) {
          if (!target.hasOwnProperty(map[0]) || isCover) {
            target[map[0]] = map[1]
          }
        }
      })
  }
  return target
}
